﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.UI;
using System.Web.UI.WebControls;
using DevelopmentPFR.Utilitaire;
using DevelopmentPFR.Classes;
namespace DevelopmentPFR.Hypermarche
{
    public partial class CreationRapportDeCommande : System.Web.UI.Page
    {
        private List<Articles> lesArticles = new List<Articles>();
        protected void Page_Load(object sender, EventArgs e)
        {
            lesArticles = (List<Articles>)Session["produitSelectionnes"];
            if (!IsPostBack)
            {
                LoadData();    
            }
        }

        #region Evenement
        /// <summary>
        /// Enregistre la commande
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void EnregistrerCommande_OnClick(object sender, EventArgs e)
        {
            //Permet de checker la présence de toutes les quantités renseignés
            bool allQuantite = true;
            foreach (GridViewRow row in listeProduits.Rows)
            {
                string quantiteCommande = ((TextBox)row.FindControl("quantiteCommande")).Text;
                if (quantiteCommande.Count() == 0 || quantiteCommande.Equals("0"))
                {
                    ((TextBox)row.FindControl("quantiteCommande")).CssClass = "bg-danger";
                    allQuantite = false;
                }
                else
                {
                    ((TextBox)row.FindControl("quantiteCommande")).BackColor = Color.White;
                }
            }
            if (allQuantite)
            {
                if (InsertionBaseDeDonnees())
                {
                    Response.Redirect("DetailCommande.aspx?ref="+referenceCommande.Text);
                }
            }
        }

        #endregion

        #region Méthodes

        /// <summary>
        /// Charge la GridView
        /// </summary>
        private void LoadData()
        {
            //Chargement de la liste des produits
            
            listeProduits.DataSource = lesArticles;
            listeProduits.DataBind();

            //Génération de la référencecommande 
            referenceCommande.Text = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() +
                                     DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + lesArticles.Count + "HYP";

            //Chargement de la date du jour
            DateCmd.Text = DateTime.Today.ToShortDateString();

            //Chargement des statuts
            filtreStatut.DataSource = BaseDeDonnees.ExecuteSelectStoredProcedure("spHyp_filtreStatus");
            filtreStatut.DataTextField = "Statut";
            filtreStatut.DataBind();

        }

        /// <summary>
        /// Permet la création de la commandes ainsi que l'insertion des articles commandéq avec leurs quantités
        /// </summary>
        public bool InsertionBaseDeDonnees()
        {
            bool insertionOk = false;
            //Paramètre à envoyer aux procédures
            Hashtable parameters = new Hashtable();

            //Création de la commande
            parameters.Add("@referenceCommande", referenceCommande.Text);
            parameters.Add("@prixTotalHT", hiddenfieldid.Value);
            parameters.Add("@statut", filtreStatut.SelectedValue);
            if (BaseDeDonnees.ExecuteUpdateStoredProcedure("spHyp_creationCommandeHypermarche", parameters))
                insertionOk = true;
            parameters.Clear();


            //Paramètre pour les articles commandés
            string quantiteCommande = "";
            string referenceArticles = "";
            //Ajout des articles commandés avec leurs quantités
            foreach (GridViewRow row in listeProduits.Rows)
            {
                quantiteCommande = ((TextBox)row.FindControl("quantiteCommande")).Text;
                referenceArticles = row.Cells[0].Text;
                parameters.Add("@reference", referenceArticles);
                parameters.Add("@quantiteCommande", quantiteCommande);
                if (BaseDeDonnees.ExecuteUpdateStoredProcedure("spHyp_ajoutArticleCommandeAvecQuantite", parameters))
                    insertionOk = true;
                parameters.Clear();
            }
            return insertionOk;
        }
        #endregion

        protected void TestDeleting(object sender, GridViewDeleteEventArgs e)
        {
            lesArticles.RemoveAt(e.RowIndex);
            LoadData();
        }

        protected void TestDeleted(object sender, GridViewDeletedEventArgs e)
        {
        }

        protected void listeProduits_OnRowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                ((TextBox)e.Row.FindControl("quantiteCommande")).Attributes.Add("onblur", "javascript:calculTotalprice()");
            }
            
        }
    }
}